package string;
/**
 * 正则表达式
 * 正则表达式的作用是验证某个字符串的内容是否符合格式要求的。
 * 
 * 正则表达式基本语法:
 * []:方括号表示一个字符，该字符只允许是[]中指定的字符。
 * 例如:
 * [abc]:这个字符只能是a或b或c
 * [a-z]:“-”表示范围，意思是[abcdef....z],表示任意一个小写字母
 * 
 * 预定义字符:
 * .:“.”在正则表达式中表示任意一个字符，内容没有限制。
 * \d:表示任意一个数字，等同于[0-9]
 * \s:表示任意一个空白字符，比如:空格，缩进，回车都是空白字符
 * \w:表示任意一个单词字符，等同于[a-zA-Z0-9_]
 * \D,\S,\W这三个大写字母的表示"非"，\d,\s,\w对立。
 * 
 * 量词:
 * ?:“?”表示前面的内容出现0次或1次
 * 例如:
 * [abc]?:可以匹配单个a,单个b,单个c,或什么字符都没有。但是aa就不行。 
 * 
 * *:“*”表示前面的内容出现0到多次(任意次)
 * 例如:
 * [abc]*:可以匹配: aaa,bbb,cccc,abcbabcabbca,什么都不写
 * 不可以匹配:abcd,ddddd,ff 因为单独看每一个字符时，出现[abc]里没有的字符
 * 
 * +:“+”表示前面的内容出现1到多次(一次以上)
 * 例如:
 * [abc]+:可以匹配:aaa,bbb,cccc,abcbabcabbca
 * 不可以匹配:abcd,ddddd,ff,什么都不写
 * 
 * {n}:n表示一个具体数字(>=0的数字)，表示前面的内容只能出现n次
 * 例如:
 * [abc]{3}:可以匹配:aaa,bbb,ccc,abc,ccb
 * 不可以匹配:aaaa,aa,abd
 * 
 * {n,m}:表示最少n次，最多m次
 * 例如:
 * [abc]{3,5}:可以匹配:abc,aaaa,abcba
 * 不可以匹配:aa,aaaaaa,aaaad
 * 
 * {n,}:表示最少3次
 * 例如:
 * [abc]{3,}:可以匹配:abc,aaaa,abcba,abbcabcbabcba.....
 * 不可以匹配:aa,adadsdasdasdasd..
 * 
 * 分组
 * ():将"()"当中的内容看做一个整体
 * 例如:
 * (abc){3}:可以匹配:abcabcabc
 * 
 * (abc|def){3}:可以匹配:abcdefabc,abcabcabc,defdefabc
 * 
 * 
 * @author 范传奇
 *
 */
public class MatchesDemo {
	public static void main(String[] args) {
		/*
		 * email的正则表达式:
		 * 
		 * fancq@tedu.com.cn
		 * 
		 * [a-zA-Z0-9_]+@[a-zA-Z0-9]+(\.[a-zA-Z]+)+
		 * \w+@[a-zA-Z0-9]+(\.[a-zA-Z]+)+ 
		 */
		String email = "fancq@tedu.cn";
		/*
		 * boolean matches(String regex)
		 * 用给定的正则表达式验证当前字符串是否符合格式要求，匹配通过则返回true
		 * 
		 * 注:
		 * 正则表达式中经常会使用"\"转义字符，如果出现时，那么在java字符串中
		 * 表示该正则表达式时，所有"\"都要写成"\\"
		 */
		String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
		boolean match = email.matches(regex);
		if(match) {
			System.out.println("是邮箱地址");
		}else {
			System.out.println("不是邮箱地址");
		}
		
	}
}










